The present disclosure relates to technology for non-volatile storage.
Semiconductor memory is used in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
Non-volatile memory cells can be programmed to store one or multiple bits per memory cell. Storing multiple bits of information in a single non-volatile memory cell typically includes mapping bits to states of the non-volatile memory cell. For example, bits “110” may correspond to a first state of a non-volatile memory cell and bits “010” may correspond to a second state of the non-volatile memory. After determining that certain bits are to be stored into a non-volatile memory cell, the non-volatile memory cell may be programmed to a state in order to store the bits. For some memory systems, a group of memory cells are programmed together. For some memory systems, a page is the basic unit of programming user data. Thus, for some memory systems, a page of non-volatile memory cells are programmed together.
Once the memory cells in the memory device have been programmed, data may be read from the memory cells by sensing the programmed states of the memory cells. However, sensed programmed states can sometimes vary from the written programmed states due to one or more factors. Error correction decoding can be used to correct data errors resulting from sensed programmed states that do not match written programmed states.